Introduction to software Engineering and software process model Software Requirements Engineering and Analysis Estimation and Scheduling Design Engineering Risks and Configuration Management Software Testing

Introduction

Nature of Software

Defining Software

Software Engineering practice

Software Engineering Principle

Software process

A Generic process Model

Defining a Framework Activity

Identifying a Task Set

Process Patterns

Process Assessment and Improvement

Prescriptive process Model

Linear Sequential Development Model / Waterfall Model

Incremental Process Model

Evolutionary Process Models

Concurrent Models

A Final Word on Evolutionary Processes

Unified Process

Aglie Software Development

Imagine you are tasked with creating a mobile app for a new restaurant. The development process can be understood as a series of steps or activities, organized within a framework. Let's break down the key concepts:


1. Software Process Framework:


In our case, the framework consists of five main activities: Communication, Planning, Modeling, Construction, and Deployment. These activities represent the essential steps in developing the restaurant app.


2. Umbrella Activities:


These are overarching activities that apply throughout the process. For our restaurant app development, umbrella activities could include Project Tracking and Control, Quality Assurance, Risk Management, and Configuration Management.


3. Process Flow:


The process flow describes how the activities are organized over time. There are different process flows: linear, iterative, evolutionary, and parallel.

Linear Process Flow: Each activity is completed in sequence from Communication to Deployment. This would be like a waterfall model, where you move from one phase to the next without going back.
Iterative Process Flow: Some activities may be repeated before moving on. For example, after Deployment, you might realize that some features need improvement, so you go back to Construction and then Deployment again.
Evolutionary Process Flow: Activities are performed in a circular manner, each iteration leading to a more complete version of the software. This is similar to an agile approach, where you continuously improve the product through feedback.
Parallel Process Flow: Multiple activities happen at the same time. For instance, while Modeling is ongoing, Construction might also start.


4. Defining a Framework Activity:


Let's focus on the Communication activity for our restaurant app. The actions within Communication might include:

Action 1.1: Initial contact with the restaurant owner to discuss app requirements.
Action 1.2: Gathering information about the restaurant's menu, target audience, and design preferences.
Action 1.3: Organizing gathered information into a brief document.
Action 1.4: Emailing the document for the owner's review and approval.


5. Identifying a Task Set:


The task set for Action 1.1 (Initial contact) might include tasks such as:

Making a list of key stakeholders (restaurant owner, chef, staff).
Setting up a phone call or meeting.
Discussing the restaurant's vision and expectations.

For a more complex project, the task set might involve additional tasks, such as conducting separate interviews with stakeholders.


6. Process Patterns:


Process patterns are like problem-solving templates. One pattern could be named "Prototyping" and might be applied when stakeholders are uncertain about their requirements.

Forces: Unclear requirements, stakeholders need a tangible prototype.
Solution: Develop a prototype, iterate based on stakeholder feedback.


This pattern can be applied when building the restaurant app. Stakeholders may not be sure about all the features they want, so creating a prototype allows them to visualize and refine their requirements.


7. An Example Process Pattern - RequirementsUnclear:


Imagine stakeholders at the restaurant are unsure about specific app requirements. The pattern suggests using a prototyping approach.

Problem: Unclear or hazy requirements.
Solution: Use prototyping to iteratively gather and solidify requirements.
Resulting Context: Stakeholders approve a software prototype, which may evolve into the final app or be discarded based on further decisions.
Related Patterns: Other related patterns might include CustomerCommunication, IterativeDesign, and CustomerAssessment.

Known Uses and Examples: Prototyping is recommended when requirements are uncertain, as it allows stakeholders to better understand and refine their needs.


In summary, the software development process for our restaurant app involves a structured framework with activities like Communication, Planning, Modeling, Construction, and Deployment. Different process flows and patterns, such as Prototyping, help address specific challenges like unclear requirements. This approach ensures a systematic and adaptable way to develop software, tailored to the unique needs of each project.

A Generic process Model


A Generic Process Model is a blueprint outlining the steps and stages involved in completing a task or project. It provides a structured framework for planning, executing, and monitoring processes, guiding individuals or teams through the necessary actions to achieve desired outcomes efficiently and effectively.


Software Process Framework


A Software Process Framework is a structured approach outlining the steps, methods, and guidelines for developing software. It provides a blueprint for organizing tasks, managing resources, and ensuring quality throughout the software development lifecycle. It typically includes stages like planning, designing, coding, testing, and maintenance.


Umbrella Activities


Umbrella activities are broad tasks that oversee and coordinate various aspects of a project or process. They encompass multiple smaller activities and ensure cohesion and efficiency. Examples include project planning, risk management, and quality assurance. Essentially, they provide overarching support and guidance to ensure the success of the entire endeavor.